package com.jn.gsondemo.views;

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;

import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.jn.gsondemo.R;
import com.jn.gsondemo.utils.JsonUtils;
import com.squareup.picasso.Picasso;

import org.json.JSONObject;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class BookDetailFragment extends Fragment {

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.activity_book_detail, container, false);

        // 假设bookJson是从资源文件或其他来源获取的JSON字符串
        String bookJson = "{ \"title\": \"向诸葛亮借智慧\",\n" +
                "      \"catalog\": \"历史 心理学 管理 \",\n" +
                "      \"tags\": \"一本好书 三国历史 社会学好书推荐 管理书籍推荐 诸葛亮 \",\n" +
                "      \"sub1\": \"《向诸葛亮借智慧》\",\n" +
                "      \"sub2\": \"《向诸葛亮借智慧》是中央电视台《百家讲坛》主讲人赵玉平老师编著的一 本管理学类图书。作品从管理学和心理学的角度出发，运用人力资源管理和组织行为学的知识，解读了三国睿智军师诸葛亮的一生。本书对三顾茅庐、舌战群儒、赤壁大战、空城计、斩马谡、六出祁山、七擒孟获等与诸葛亮相关的大事件进行了精辟的分析。 诸葛亮（公元181年7月23日—234年8月28日），三国时期蜀国丞相，字孔明，号卧龙，琅琊阳都人，是三国时期杰出的政治家、军事家、发明家和文学家。诸葛亮上知天文、下知地理，雄才大略、才华横溢。为匡扶蜀汉政权，他呕心沥血，鞠躬尽瘁，死而后已。唐朝诗人杜甫有诗赞道：“三顾频烦天下计，两朝开济老臣心。出师未捷身先死，长使英雄泪满襟。”，可见诸葛亮受到后世人们极大的尊崇，是后世忠臣的楷模、智慧的化身。 《向诸葛亮借智慧》一书是管理学教授赵玉平“麻辣说三国”系列中的一部文学作品。赵玉平老师同易中天教授一起被权威机构评选为“2009中国十大国学专家”，是运用管理学、国学、心理学综合解析《水浒传》、三国历史人物的中国第一人，开辟了运用管理学和心理学解读传统经典的新领域。 隆中对策、舌战群儒、草船借箭、七擒孟获……一个个璀璨如明珠的经典故事，成就了诸葛亮无人企及的智慧传奇。但是，孔明先生的智慧究竟从何而来呢？在千百年后的今天，他的卓越智慧又能给今天的我们带来哪些启迪和帮助呢？《向诸葛亮借智慧》一书从一个崭新的角度观察诸葛亮这个重要的历史人物和相关的历史事件，讲故事的同时也分析规律，并结合当今现实生活，古为今用，总结出能够运用于求职、求人、用人、管人等现实生活中的规律和技巧。 鲁迅说：“关公之义近乎伪，诸葛之智近乎妖。” 《向诸葛亮借智慧》，哪怕只借到了一点点，也足够让我们的生活过得更轻松、更顺心了。 《向诸葛亮借智慧》\",\n" +
                "      \"img\": \"http://apis.juhe.cn/goodbook/img/379cdafe13f92d62e99388182a6d08ec.jpg\",\n" +
                "      \"reading\": \"8091人阅读\",\n" +
                "      \"online\": \"京东商城:http://book.jd.com/10483893.html 当当网:http://product.dangdang.com/product.aspx?product_id=21020821 苏宁易购:http://www.suning.com/emall/prd_10052_22001_-7_1006212_.html \",\n" +
                "      \"bytime\": \"2013年4月28日\" }";

        try {
            JSONObject book = new JSONObject(bookJson);
            TextView titleView = view.findViewById(R.id.book_title);
            TextView catalogView = view.findViewById(R.id.book_catalog);
            TextView tagsView = view.findViewById(R.id.book_tags);
            TextView sub1View = view.findViewById(R.id.book_sub1);
            TextView sub2View = view.findViewById(R.id.book_sub2);
            TextView readingView = view.findViewById(R.id.book_reading);
            TextView onlineView = view.findViewById(R.id.book_online);
            TextView bytimeView = view.findViewById(R.id.book_bytime);
            ImageView imageView = view.findViewById(R.id.book_image);

            titleView.setText(getValueByKey("title"));
            catalogView.setText(book.getString("catalog"));
            tagsView.setText(book.getString("tags"));
            sub1View.setText(book.getString("sub1"));
            sub2View.setText(book.getString("sub2"));
            readingView.setText(book.getString("reading"));
            onlineView.setText(book.getString("online"));
            bytimeView.setText(book.getString("bytime"));
            List<String> uriList = extractUrls(getValueByKey("online"));
            for (String url : uriList){
                Log.d("获取网址", url);
            }
            // 设置sub2View只显示3行
            sub2View.setMaxLines(3);
            // 加载图片
            Picasso.get()
                    .load(book.getString("img"))
                    .error(R.drawable.book1) // 这里设置默认图片的资源ID
                    .resize(200, 350)
                    .into(imageView);
        } catch (Exception e) {
            e.printStackTrace();
        }

        return view;
    }

    private String getValueByKey(String key) {
        String jsonStr = getJson("book.json");
        String value = JsonUtils.getKeyRecursively(jsonStr, key);
        Log.d("asdf", "getValueByKey value ==== " + value);
        return value ;
    }


    private String getJson(String name) {
        String json = JsonUtils.getJsonFromAssets(getContext(), name);
        Log.d("asdf", "getJson = " + json);
        return json;
    }


    private List<String> extractUrls(String text) {
        List<String> urls = new ArrayList<>();

        // 正则表达式，用于匹配URL
        String regex = "((https?|ftp|gopher|telnet|file):((//)|(\\\\))+[\\w\\d:#@%/;$()~_?\\+-=\\\\\\.&]*)";
        Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
        Matcher matcher = pattern.matcher(text);

        while (matcher.find()) {
            urls.add(matcher.group());
        }

        return urls;
    }

    //跳转浏览器
    private void openWebsite(String uri) {
        String url = uri; // 替换成你要跳转的网址
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
        if (intent.resolveActivity(getContext().getPackageManager()) != null) {
            startActivity(intent);
        } else {
            // 没有可以处理此Intent的应用程序
            Toast.makeText(getActivity(), "无法打开网页，请检查设备是否安装了浏览器", Toast.LENGTH_SHORT).show();
        }
    }
}